CAPSOLVER
ブログ
ウェブスクリーピング in Golang で Colly を使う

ウェブスクラピングをGolangでCollyを使用して

Logo of CapSolver

Lucas Mitchell

Automation Engineer

04-Dec-2025

ウェブスクレイピングは、ウェブサイトからデータを抽出するために使用される方法です。Golangでは、Collyライブラリがそのシンプルさと強力な機能により、ウェブスクレイピングのための人気のあるツールです。このガイドでは、GolangプロジェクトにCollyを設定し、基本的なスクリーパーを構築し、複雑なデータ抽出シナリオを処理し、並列リクエストでスクリーパーを最適化する方法を紹介します。

Golangプロジェクトの設定

まず、システムにGoがインストールされていることを確認してください。以下のコマンドでプロジェクトを初期化し、Collyパッケージを取得してください:

bash Copy
go mod init my_scraper
go get -u github.com/gocolly/colly

これにより、プロジェクトディレクトリが設定され、Collyパッケージがインストールされます。

CapSolverボーナスコードを取得する

自動化予算を即座に増やす!
CapSolverアカウントにチャージするときにボーナスコード CAPN を使用すると、毎回 5%のボーナス を受け取れます — 制限なし。
CapSolverダッシュボードで今すぐ利用してください。
.

基本的なスクリーパーの構築

特定のWikipediaページからすべてのリンクを抽出する基本的なスクリーパーを作成しましょう。

  1. 新しいファイル main.go を作成し、次のコードを追加してください:
go Copy
package main

import (
    "fmt"
    "github.com/gocolly/colly"
)

func main() {
    c := colly.NewCollector(
        colly.AllowedDomains("en.wikipedia.org"),
    )

    c.OnHTML(".mw-parser-output", func(e *colly.HTMLElement) {
        links := e.ChildAttrs("a", "href")
        fmt.Println(links)
    })

    c.Visit("https://en.wikipedia.org/wiki/Web_scraping")
}

このコードは、en.wikipedia.orgに制限された新しいCollyコレクターを初期化し、ページの.mw-parser-outputのdiv内のすべてのリンクを検索して出力するコールバックを設定します。

テーブルデータのスクレイピング

より複雑なタスクとして、テーブルデータをスクレイピングし、CSVファイルに書き込むには、Goのencoding/csvパッケージを使用できます:

  1. main.goに次のコードを追加して、テーブルデータをスクレイピングします:
go Copy
package main

import (
    "encoding/csv"
    "log"
    "os"
    "github.com/gocolly/colly"
)

func main() {
    fName := "data.csv"
    file, err := os.Create(fName)
    if err != nil {
        log.Fatalf("Could not create file, err: %q", err)
        return
    }
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    c := colly.NewCollector()

    c.OnHTML("table.wikitable", func(e *colly.HTMLElement) {
        e.ForEach("tr", func(_ int, row *colly.HTMLElement) {
            rowData := []string{}
            row.ForEach("td", func(_ int, cell *colly.HTMLElement) {
                rowData = append(rowData, cell.Text)
            })
            writer.Write(rowData)
        })
    })

    c.Visit("https://en.wikipedia.org/wiki/List_of_programming_languages")
}

このスクリプトは、Wikipediaページからテーブルデータをスクレイピングし、data.csvに書き込みます。

並列リクエストの実行

スクレイピングを高速化するには、Goのゴルーチンを使用して並列リクエストを行います。以下は、複数のページを並列でスクレイピングする方法です:

go Copy
package main

import (
    "fmt"
    "github.com/gocolly/colly"
    "sync"
)

func scrape(url string, wg *sync.WaitGroup) {
    defer wg.Done()
    
    c := colly.NewCollector()
    
    c.OnHTML("title", func(e *colly.HTMLElement) {
        fmt.Println("Title found:", e.Text)
    })
    
    c.Visit(url)
}

func main() {
    var wg sync.WaitGroup
    urls := []string{
        "https://en.wikipedia.org/wiki/Web_scraping",
        "https://en.wikipedia.org/wiki/Data_mining",
        "https://en.wikipedia.org/wiki/Screen_scraping",
    }

    for _, url := range urls {
        wg.Add(1)
        go scrape(url, &wg)
    }

    wg.Wait()
}

この例では、URLと待機グループを引数に取るscrape関数を定義します。この関数はCollyコレクターを初期化し、ページのタイトルを検出するコールバックを設定し、URLにアクセスします。main関数は待機グループを作成し、URLのリストをループして、各URLに対してゴルーチンを開始して並列でスクレイピングを行います。

これらのステップに従うことで、Collyを使用してGolangで堅牢なウェブスクレイパーを構築し、さまざまなスクレイピングシナリオを処理し、並列リクエストでパフォーマンスを最適化できます。より詳細なチュートリアルや高度な使用法については、GoとCollyを使ったウェブスクレイピングのリソースを参照してください。

その他のGo用ウェブスクレイピングライブラリ

Collyに加えて、Golangでウェブスクレイピングに使用できる他の優れたライブラリもあります:

  • GoQuery: jQueryに似た構文と機能セットを提供し、jQueryのように簡単にウェブスクレイピング操作を行うことができます。
  • Ferret: 移植可能で拡張性があり、高速なウェブスクレイピングシステムで、ウェブからのデータ抽出を簡略化することを目的としています。Ferretは独自の宣言型言語を使用してデータ抽出に焦点を当てています。
  • Selenium: ヘッドレスブラウザの機能で知られており、動的コンテンツのスクレイピングに適しています。Goの公式サポートはありませんが、Golangプロジェクトで使用可能なポートが存在します。

結論

ウェブスクレイピングは、ウェブサイトからデータを効率的に抽出するための強力で重要なスキルです。GolangとCollyライブラリを使用することで、さまざまなデータ抽出シナリオに対応する堅牢なスクリーパーを構築できます。これは、単純なリンクの収集から、複雑なテーブルデータの抽出、並列リクエストによるパフォーマンスの最適化に至るまでです。

このガイドでは、以下の内容を学びました:

  1. Collyライブラリを使用してGolangプロジェクトを設定する方法。
  2. ページのリンクを抽出する基本的なスクリーパーを構築する方法。
  3. テーブルデータをスクレイピングし、CSVファイルに書き込むなどのより複雑なデータ抽出を処理する方法。
  4. 並列リクエストを使用してスクリーパーを最適化する方法。

これらのステップに従うことで、Collyのシンプルさと強力な機能を活用して、効果的で効率的なGolangのウェブスクレイパーを構築できます。より高度な使用法や詳細なチュートリアルについては、GoとCollyを使ったウェブスクレイピングのリソースを探索してください。

FAQ

1. CollyはGolangでウェブスクレイピングを学ぶ初心者に適していますか?

はい。Collyはシンプルで初心者向けに設計されており、DOMパース、リクエスト処理、コールバック、並列処理などの強力な機能も提供しています。新しいGo開発者でも、わずかなコードで機能するスクリーパーをすぐに構築できます。


2. Collyはテーブルやリストなどの構造化されたコンテンツをスクレイピングできますか?

はい。Collyは特定のHTMLノードと属性を選択できるため、テーブル、リスト、リンク、その他の構造化された要素を簡単に抽出できます。また、Goの標準ライブラリを使用してCSVやJSONなどのファイルに結果を直接保存することも可能です。


3. Collyのウェブスクレイパーを高速化する方法はありますか?

Goのゴルーチンを使用して複数のページを並列処理することで、スクレイピングのパフォーマンスを向上させることができます。複数のスクリーパーを同時に実行し、待機グループで同期することで、特に大規模なデータセットや複数のURLをクロールするタスクにおいて、スクレイピングのパフォーマンスが大幅に向上します。

コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。

もっと見る

タブプロキシ
タブプロキシ: お得な海外住宅用プロキシ

この記事では、Tabproxyとは何か、および彼らが提供するサービスについてご紹介します。

web scraping
Logo of CapSolver

Anh Tuan

12-Dec-2025

ウェブスクリーピング エラー
402、403、404、および429エラーとは?Web Scrapingにおける包括的なガイド

マスターWebスクレイピングのエラー処理で、402、403、404、および429エラーとは何かを理解してください。403 Forbiddenを修正する方法を学び、レート制限エラー429の解決策を実装し、新たに登場する402 Payment Requiredのステータスコードを処理してください。

web scraping
Logo of CapSolver

Sora Fujimoto

12-Dec-2025

Pythonを使ったWebスクレイピング
ウェブスクレイピング Pythonで: 2026年の最適なテクニック

2026年のトップPythonウェブスクレイピングテクニックを学び、動的JavaScriptコンテンツの処理、認証フローの管理、CAPTCHAの解決、隠された罠の特定、人間の行動のシミュレーション、リクエストパターンの最適化、大規模なスクレイピングプロジェクトでのリソース使用量の削減について学びます。

web scraping
Logo of CapSolver

Sora Fujimoto

12-Dec-2025

ウェブスクリーピングのキャプチャを解決する
ウェブスクレイピングをブロックされずに実行する方法と、ウェブスクレイピングのCaptchaを解決する方法

ウェブスクラピングは、ウェブサイトからデータを抽出するための一般的な技術となっています。しかし、多くのウェブサイトではスクラピング防止対策を採用しており、例えば...

web scraping
Logo of CapSolver

Emma Foster

11-Dec-2025

ウェブクローリングとウェブスクラピング
ウェブクローリング vs. ウェブスクラッピング:本質的な違い

WebクローリングとWebスクラピングの本質的な違いを解明しましょう。それぞれの異なる目的と、10の強力なユースケース、そしてCapSolverがAWS WAFやCAPTCHAブロックを回避し、スムーズなデータ収集を実現する方法について学びましょう。

web scraping
Logo of CapSolver

Emma Foster

09-Dec-2025

AI-LLM: リスク管理の未来のソリューション 画像認識およびCAPTCHAの解決
AI-LLM: リスクコントロールのための画像認識とCAPTCHA解決の未来のソリューション

LLMsがグラフィカルCAPTCHAの解決をどのように変革するかの詳細な探求:ゼロショット推論とCNNの精度を融合した現代のリスク管理へのアプローチ

web scraping
Logo of CapSolver

Sora Fujimoto

05-Dec-2025